package com.hhkj.admin.student.domain;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BizBaseEntity;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.valid.VEdit;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 学员信息对象 t_student
 * 
 * @author ruoyi
 * @since 2023-05-12
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("t_student")
public class Student extends BizBaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 学员名称 */
    @Excel(name = "学员名称")
    @NotBlank(message = "学员名称不能为空",groups = {VEdit.class})
    private String name;

    /** 身份证号码 */
    @Excel(name = "身份证号码")
    @NotBlank(message = "身份证号码不能为空",groups = {VEdit.class})
    private String idCard;

    /**
     * 密码
     */
    private String password;

    /**
     * 手机号
     */
    @Excel(name = "手机号")
    private String phone;

    /** 原系统id信息 */
    private Long origSysId;

    /** 备注 **/
    @TableField(exist = false)
    private String remark;

    /**
     * 考试科目，关联t_course表主键
     */
    @Excel(name = "考试科目，关联t_course表主键")
    @NotNull(message = "考试科目不能为空", groups = {VEdit.class})
    @TableField(exist = false)
    private Long courseId;

    /**
     * 关联科目的父级id 关联t_course表主键
     */
    @TableField(exist = false)
    private Long courseParentId;

    /**
     * 科目结构名称
     */
    @TableField(exist = false)
    private String structureName;

    /**
     * 批次id,关联t_student_batch表主键
     */
    @Excel(name = "批次id,关联t_student_batch表主键")
    @TableField(exist = false)
    private Long batchId;

    /**
     * 账号期限-到期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "到期时间", width = 30, dateFormat = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date lineDate;

    /**
     * 所属企业id,关联sys_user表的主键
     */
    @Excel(name = "所属企业id,关联sys_user表的主键")
    @TableField(exist = false)
    private Long entId;

    /**
     * 状态 1未审核 2已通过 3已过期
     */
    @Excel(name = "状态")
    @TableField(exist = false)
    private String status;

    /**
     * 状态列表  1未审核 2已通过 3已过期
     */
    @TableField(exist = false)
    private List<String> statusList;

    /**
     * 批次号
     */
    @TableField(exist = false)
    private String batchNum;

    /**
     * 考试科目名称
     */
    @TableField(exist = false)
    private String courseName;

    /**
     * 所属企业名称
     */
    @TableField(exist = false)
    private String entName;

    /**
     * 关联科目id
     */
    @TableField(exist = false)
    @NotNull(message = "关联conCourseId不能为空", groups = {VEdit.class})
    private Long conCourseId;

    /**
     * 关联机构id
     */
    @TableField(exist = false)
    private Long insId;

    /**
     * 关联机构名称
     */
    @TableField(exist = false)
    private String insName;

    /**
     * 学员主键idList
     */
    @TableField(exist = false)
    private List<Long> idList;

    /**
     * 题库类型id，关联t_course_bank_type表主键
     */
    @TableField(exist = false)
    private Long courseBankTypeId;

    /**
     * 题库类型名称
     */
    @TableField(exist = false)
    private String courseBankTypeName;

    /**
     * 最近练习时间
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date lastPracticeTime;

    /**
     * 查询开始时间
     */
    @TableField(exist = false)
    private Date lineDateStart;

    /**
     * 查询结束时间
     */
    @TableField(exist = false)
    private Date lineDateEnd;

    /**
     * Code 登录时获取的 code，可通过wx.login获取
     */
    @TableField(exist = false)
    private String code;

    /**
     * 绑定标志 0本次不绑定，正常检查是否以绑定，并校验
     * 1 本次进行绑定，如果已绑定成功提示已绑定
     */
    @TableField(exist = false)
    private String bingFlag;

    /**
     * 是否校验openid 标志
     * null或者1校验  0不校验
     */
    @TableField(exist = false)
    private String openIdFlag;


    @Override
    @NotNull(message = "唯一主键不能为空", groups = {VEdit.class})
    public Long getId() {
        return super.getId();
    }
}
